
/**Framework Extension Utility Functions*/
//Element
var Element = {
    show:function(e){(Object.getTypeName(e)=='String')? $get(e).style.display="":e.style.display="";},
    hide:function(e){(Object.getTypeName(e)=='String')? $get(e).style.display="none":e.style.display="none";},
    toggle:function(e){
        var el = (Object.getTypeName(e)=='String')? $get(e):e;
        el.style.display=(el.style.display == 'none')?el.style.display:'none';
    }
};

//Browser
Sys.Browser.hasXPath = !!document.evaluate;

//String
String.prototype.blank = function()
{
    return /^\s*$/.test(this);
}

//Document
if(!document.getElementsByClassName){document.getElementsByClassName = function(className,parentElement,tagName)
    {
        return getElementsByClassName2(className,parentElement,tagName);
    }
}

function getElementsByClassName2(_className, _startElem, _filterTag)
{

   if (typeof _className === 'string')
      { _className = new RegExp('(^| )' + _className + '( |$)'); }   

   // default to the document element if no _startElem is specified
   _startElem = _startElem || document;

   // default to all elements if no _filterTag is specified
   _filterTag = _filterTag || '*';

   var arr = [];    // the array of matched elements that will be returned
   var tags;        // array of all tags to check for class name matches

   /* If the browser supports [DOMElement].all, we'll use that.  Otherwise
       we'll use .getElementsByTagName(..), which is really the preferred method. */
   if (typeof _startElem.all != 'undefined' && _filterTag == '*')
   {
      tags = _startElem.all;
   }
   else
   {
      // the W3C way (but won't work for IE less than 6)
      
      tags = (typeof(_startElem)=='string')?$get(_startElem).getElementsByTagName(_filterTag)
      :_startElem.getElementsByTagName(_filterTag);
   }
   // loop through the tags array checking for .className matches
   var i, len = tags.length;
   for (i = 0; i < len; i++)
   {
      var elem = tags[i];
      if (_className.test(elem.className))
         { arr.push(elem); }
   }
   return arr;
}


//Base Controls
Type.registerNamespace("Insp");
Type.registerNamespace("Insp.UI");

Insp.UI._PopupLayer = function()
{
    this._div= null;
}
Insp.UI._PopupLayer.prototype = {
    getPopupLayer:function()
    {
        if(!this._div)
        {
            this._div= document.createElement('div');
            this._div.id='PopupLayerDiv';
            document.body.appendChild(this._div);
        }
        return this._div;
    }
}

var $PopupLayer = Insp.UI.PopupLayer = new Insp.UI._PopupLayer();

Insp.UI._PopupHelper = function(){}
Insp.UI._PopupHelper.prototype = {
    getPopupElement:function(elName,width,height)
    {
        var pl = $PopupLayer.getPopupLayer();
        var el = $get(elName,pl)
        if(el) return el;
        el = document.createElement('div');
        el.id = elName;
        if(width)el.style.width = width+'px';
        if(height)el.style.height = height+'px';
        el.style.display='none';
        pl.appendChild(el);
        return el;
    },
    getGenericPopupElement:function(elName,width,height)
    {
        //Cobrand Image for Popup. Change GetPopupCloseImg() in cobrand.js
        var el = this.getPopupElement(elName,width,height);
        el.innerHTML='<table id="'+elName+'_TitleTable" class="ptModHeader ptModTitlebar" style="width: 100%; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0">'+
		'<tr>'+
		'<td class="ptModTitlebarLeft">&nbsp;</td>'+
		'<td><div id="'+elName+'_PopupTitleContainer" class="TTL">'+
            '<img id="'+elName+'_PopupCancelImage" class="Popup_Close" src="' + GetPopupCloseImg() +'" style="border-width: 0px; float: right; margin-right: 5px;">'+
            '<span id="'+elName+'_Title">Title</span>'+
		'</div></td><td class="ptModTitlebarRight">&nbsp;</td></tr></table>'+
        '<div id="'+elName+'_PopupContent"class="Popup_Content" align="left"></div>';
        return el;
    }
}
Insp.UI.PopupHelper = new Insp.UI._PopupHelper();

function OnAddModuleTimeOut1(sender, args)
{
    //alert("TimedOut.");
}

function OnAddModuleError1(sender, args)
{
    //alert("Error.");
}

function PassVars(ColumnID,PrevModule,CurrModule,TabName,NextModule){
    if(OldModule!=CurrModule||OldPreModule!=PrevModule||OldColumn!=ColumnID){
        //Verify the user didnt just move the module and move it back. Also prevent repeated calls to the web service with the same input.
        OldModule = CurrModule;
        OldPreModule = PrevModule;
        OldColumn = ColumnID;
        OldNextModule = NextModule;
        //Portal.PortalServices.UpdateUser(CurrModule+"|"+ColumnID+"|"+PrevModule+"|"+TabName,OnSuccess,OnTimeOut,OnError);
        LogClient('902','portalmain'); //Move Module
        WSCall("updateuser",CurrModule+"|"+ColumnID+"|"+PrevModule+"|"+TabName+"|"+NextModule,null,null,null);
        reloadPage();
    }
}

//WSCall("updateuser","foo=bar",SuccessMethodEntry,OnTimeOutEntry,OnErrorEntry);
function WSCall(methodname,params,SuccessMethodEntry,OnTimeOutEntry,OnErrorEntry){
    if(SuccessMethodEntry==null){SuccessMethodEntry=OnSuccess;}
    if(OnTimeOutEntry==null){OnTimeOutEntry=OnTimeOut;}
    if(OnErrorEntry==null){OnErrorEntry=OnError;}
    
    if(methodname=="updateuser"){
        Portal.PortalServices.UpdateUser(params,SuccessMethodEntry,OnTimeOutEntry,OnErrorEntry);
    }
    else if(methodname=="delete"){
        Portal.PortalServices.DeleteModule(params,SuccessMethodEntry,OnTimeOutEntry,OnErrorEntry);
    }
    else if(methodname=="ManageTask"){
        Portal.PortalServices.ManageTask(params, SuccessMethodEntry, OnTimeOutEntry, OnErrorEntry);
    }    
    
    
}

function ShowSetDefaultLink(){
    if(getElementsByClassName2("SignInLinkClass","","a").length>0){
        if($get(getElementsByClassName2("SignInLinkClass","","a")[0].id).innerHTML=="Sign In"){
            
            if(getElementsByClassName2("SDLnkClass","","a")[0]){
                Element.show(getElementsByClassName2("SDLnkClass","","a")[0].id);                
            }            
               
        }
    }
}

function OnSuccess(arg){
   ShowSetDefaultLink();
}
function OnTimeOut(e){
    //alert('Your Data was not saved. Server Timed Out');
}
function OnError(e){
    //alert('There was an error saving your data.');
}

function LogClient(ObjectID,ObjectPosition){
    if(!ObjectID){
        ObjectID = "0";
    }
    //__doPostBack(CurrModule, "LogClient$" + ObjectID+"|"+ObjectPosition);
    //var IceCookie = getCookie("Ice");
    //var ipaddress;
    Portal.PortalServices.LogHandler_Client(ObjectID+"|"+ObjectPosition);
}

function LogModules(){
////Impression logging is disabled since we dont use it
//    var ObjectID = "0";
//    var startElemID = GetActiveTabContainer();
//    var PortalMods = getElementsByClassName2("ptModHeader ptModTitlebar",startElemID,"table");
//    var className = null;
//    var PortalMod = null;
//    var ObjectArray = new Array();
//    for(i=0;i<PortalMods.length;i++){
//        if(PortalMods[i].parentNode.parentNode){
//            if(PortalMods[i].parentNode.parentNode.className.split(' ').length > 1)
//            {
//                className = PortalMods[i].parentNode.parentNode.className.split(' ')[1].substring(5);
//                Portal.PortalServices.LogHandler_Impression(className);
//            }
//        }
//    }
}
function LogSuccess(e){
    
}
function LogTimeOut(){
    //Send message or log to another location that the javascript failed.
}
function LogError(){
    //Send message or log to another location that the javascript failed.
}
function getCookie(NameOfCookie)
{
    if (document.cookie.length > 0)
    {
        begin = document.cookie.indexOf(NameOfCookie+"=");
        if (begin != -1)
        {
            begin += NameOfCookie.length+1;
            end = document.cookie.indexOf(";", begin);
            if (end == -1) end = document.cookie.length;
            return unescape(document.cookie.substring(begin, end)); 
        }
    }
    return null;
}

function FindModuleObj(inputObj)
{
	if(inputObj && inputObj!=null && inputObj.className!= null &&inputObj.className.indexOf("ajax__tab_xp")==-1 && inputObj!=""){
		var i=0;
		var inputObjNew = $get(inputObj.id);
		
		while(null != inputObjNew && inputObjNew.parentNode != null && 
		      inputObjNew.parentNode.className != null && 
		      inputObjNew.parentNode.id != null && 
		      inputObjNew.parentNode.className != 'undefined' && 
		      inputObjNew.parentNode.className.indexOf('ptModule ')==-1 && 
		      inputObjNew.parentNode.className!="ptModule" && 
		      inputObjNew.parentNode.id.indexOf("_PortalUP")==-1)
		{
			inputObjNew=inputObjNew.parentNode;
			i++;
			if(i==25)
			{
				break;
			}
		}
			
			
		if(null != inputObjNew && 
		   inputObjNew.parentNode != null && 
		   inputObjNew.parentNode.className != null && 
		   inputObjNew.parentNode.className != 'undefined' && 
		   inputObjNew.parentNode.id != null)
		{
			if(inputObjNew.parentNode&&inputObjNew.parentNode.className.indexOf('ptModule ')!=-1||inputObjNew.parentNode.className==('ptModule '))
			{
				inputObjNew = $get(inputObjNew.id);    
				return inputObjNew.parentNode;
			}
			else
			{
				return "false";
			}
		}
	}
	return "false";
}


function CloseLoading(){
    
//    Element.hide('loadingContainer');
//    Element.hide('loadingContainer2');
}

function GetModuleTop(obj)
{    
    while (obj!=document && obj.id.indexOf('_MUP') == -1 && obj.id.indexOf('_MUP' + '_') == -1)
        obj=obj.parentNode;
        
        if (obj==document) obj=null;
    return obj;
}
    
function GetObjectInModule(parentObj,tag,name)
{          
    var containerTagName = parentObj.getElementsByTagName(tag);
    var tagID = "";        
    var fobj;
    for(i=0; i < containerTagName.length; i++)
    {
        tagID = containerTagName[i].getAttribute('id');            
        if(tagID)
        {
            if(tagID.indexOf(name) != -1 && tagID.indexOf(name + "_") == -1)
            {     
                 fobj=containerTagName[i];          
                 break;
            }
        }
    }
    return fobj;      
}

function termsclick(){
    LogClient('916','portalmain');
    getElementsByClassName2("termsbuttonClass","","input")[0].click();
}

function privacyclick(){
    LogClient('915','portalmain');
    getElementsByClassName2("privacybuttonClass","","input")[0].click();
}

//Check every 30 seconds if the session cookie has expired and then refresh the page if true
function reloadPage(){
    //setTimeout("getrefresh()",30000);
}
function getrefresh(){
    if(oldsessionCookie!=getCookie("ASP.NET_SessionId")){
        //location.href=location.href;
    }
}


    function MinimizeModules()
    {   
        ///Do we really need this?
    }
     function MaximizeModules()
     {
        ///Do we really need this?
     }
     
     function getLocation(fullURL)
     {        
        var loc='';
        if (fullURL)
            loc=location;
        else        
            loc=location.toString().split('?')[0];
        
        return loc;
     }
    
    arrMinimizedModules = new Array();

BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		if(this.browser == "Safari")
		{
            var newSS=document.createElement('link');
            newSS.rel='stylesheet';
            newSS.type = 'text/css';
            newSS.href='styleSafari.css';
            document.getElementById("Head1").appendChild(newSS);
            Sys.Browser.WebKit = { };
            // Safari 3 is considered WebKit
            if( navigator.userAgent.indexOf( 'WebKit/' ) > -1 )
            {
                Sys.Browser.agent = Sys.Browser.WebKit;
                Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
                Sys.Browser.name = 'WebKit';
            }
		}
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	}
	,
	dataBrowser: [
        { 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	]
}

function ActiveTabChanged()
{
}
function getTimeOutMethods(){}
function ShowPanel(){}
skipcol="0";

function GetPopupCloseImg()
{
    return "quickReadClose.png";
}

function LoadFlashObject_INSP(data,id,width,height,flashvars,src,outputlocation)
{
	    var so;
        so = new SWFObject(data, id, width, height,"9");
        if(src != "")
            so.addParam("src", src);
        if(flashvars != "")
            so.addParam("flashVars", flashvars);
        so.addParam("type","application/x-shockwave-flash");
        so.addParam("quality", "high");
        so.addParam("wmode", "transparent");
        so.addParam("pluginspage", "http://www.adobe.com/go/getflashplayer");
        so.addParam("allowScriptAccess", "always");
        so.addParam("allowNetworking", "all");
        so.write(outputlocation);
		    
}

function SpecialCharacter(o)
{
    var rV=o;
    switch(o)
    {
        case '%': rV='!25'; break;        
        case '+': rV='!2B'; break;
        case '|': rV='!7C'; break;
        case '/': rV='!2F'; break;
        case '\\': rV='!5C'; break;
        case '&': rV='!26'; break;
        case ' ': rV='%20'; break;
        case '@': rV='%40'; break;
        case '<': rV='!3C'; break;
        case '>': rV='!3E'; break;
        case '=': rV='%3D'; break;
        case '"': rV='!22'; break;
        case '#': rV='!23'; break;
        case ':': rV='!3A'; break;
        case '?': rV='!3F'; break;
        case ';': rV='%3B'; break;
        case '`': rV='%60'; break;        
        //case '~': rV='!7E'; break;
        case '$': rV='%24'; break;
        case '.': rV='!FE'; break;
        case '*': rV='!FF'; break;
        case '!': rV='!ZZ'; break;
      }
    return rV;
}
